# FaceDataCollect,人脸数据收集
import cv2
# 调用笔记本内置摄像头，所以参数为0，如果有其他的摄像头可以调整参数为1，2
cap = cv2.VideoCapture(0)
# 注意路径
face_detector = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
# 请输入id:0为一个人，第二个人请输入1，在4py中检测识别中idnums有用
face_id = input(' enter user id:')
print(' Initializing face capture. Look at the camera and wait ...')
count = 0
while True:  # 从摄像头读取图片
    sucess, img = cap.read()
    # 检测人脸
    faces = face_detector.detectMultiScale(img, 1.3, 5)
    # 面部画框
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0))
        count += 1

        # 保存图像，注意路径
        cv2.imwrite(r"img/user." + str(face_id) + '.' + str(count)
                    + '.jpg',img[y: y + h, x: x + w])
        cv2.imshow('image', img)
    # 保持画面的持续。
    k = cv2.waitKey(1)
    if k == 27:  # 通过esc键退出摄像
        break
    elif count >= 100:  # 得到1000个样本后退出摄像，可自定义数值大小
        break
cap.release()
cv2.destroyAllWindows()